Where and why JVM checks that the return type of entry method main(String args[]) is void and not an

Posted by akjain on Stack Overflow See other posts from Stack Overflow or by akjain
Published on 2010-03-12T07:26:11Z Indexed on 2010/03/12 7:27 UTC
Read the original article Hit count: 137

Filed under:
|
|
|
|

I will try to answer both, please correct me if I am wrong:

Where: If a static method is being called using Classname.method() or using reflection then it doesn’t matter even if you change the return type of the calling method, the same method will still be called.

So JVM probably checks this in one of the native methods of jvm.cpp

methodHandle m (THREAD, init_klass->find_method(vmSymbols::object_initializer_name(),> vmSymbols::void_method_signature()));

if (m.is_null()) { ------ THROW_MSG_0 ………..

Why: Although it’s of useless to return a value from main, as java does not do anything with it but if we try to change the return type of main to int for example, JVM throws

public static int main(String[] args) { return 1;
}

java.lang.NoSuchMethodError: main Exception in thread "main"

So may be Java mandates the use of same signature for entry method main() to maintain a symmetry in all Java programs written.

© Stack Overflow or respective owner

Related posts about java

Related posts about jvm